void main() {
  //dart中没有byte、char、float类型。int、double都是64位
  //1.字符串类型 Strings(使用单引号、双引号、三个引号原样输出都可以)
  var str1 = "fauks";
  String str2 = 'slx';
  //字符串拼接：使用+号 $
  print('$str1 $str2');

  //直接使用 == 判断字符串是否相等
  //assert(str2 == str1);

  //判断对象是否相同
  assert(identical(str1, str2));

  //数值类型 Numbers 不能当做整数使用,a+"fauks" 编译错误
  int a = 12; //值必须是整数
  double b = 1122.3; //值可以为浮点类型也可以为整形

  //Booleans类型
  bool flag = true;

  //数组List 在Dart中，数组是列表对象，所以可以称之为列表
  //定义方式一：字面量形式，泛型通过类型推断
  var l1 = ['ss', 'fauks', 'jar'];
  var myList = <int>[]; //数组为空时可以手动指定泛型
  print('数组长度为${l1.length},第一个值为${l1[0]}');
  //定义方式二 使用构造函数,还可以指定泛型，推荐省略new
  var l2 = <int>[];
  l2.add(112);
  //定义常量数组
  var constList = const [1, 2, 3];
  //constList.add(12); 常量数组不能添加元素，
  //constList本身使用var修饰是变量，可以重新指向新数组

  //字典类型Maps,是一个键值对相关的对象，可以指定泛型
  var user = <String, Object>{"name": "fauks", "age": 12};
  //访问属性不能使用点操作符
  print('姓名：${user["name"]},年龄${user["age"]}');
  //第二种方式构造函数
  var person = new Map();
  //如果key不存在返回null
  person["address"] = "青岛";
  person["hobby"] = ["篮球", "足球"];

  //类型判断 is
  if (user is Map) {
    print('user 是字典');
  } else {
    print('user不是字典');
  }
}
